package com.yjd.comm.base.concurrent.task;

import java.util.List;

import com.yjd.comm.util.FrameUtil;

/**
 * <b>description</b>：任务处理工具类 <br>
 * <b>time</b>：2016-4-12上午11:53:14 <br>
 * <b>author</b>： ready likun_557@163.com
 */
public class TaskDisposeUtil {

    /**
     * 将list转换成任务列表
     *
     * @param list
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> List<ITaskItem<T>> getTaskItems(List<T> list) {
        List<ITaskItem<T>> result = FrameUtil.newArrayList();
        for (T object : list) {
            result.add(new DefaultTaskItem<T>(object));
        }
        return result;
    }

    /**
     * 多线程处理任务
     *
     * @param moreThread
     *            是否多线程处理
     * @param poolSize
     *            线程池大小
     * @param list
     *            处理的任务列表
     * @param taskHandler
     *            任务处理器
     * @throws Exception
     */
    public static <T> void dispose(boolean moreThread, int poolSize,
                                   List<T> list, ITaskHandler<T> taskHandler) throws Exception {
        new DefaultTaskDispose(moreThread, poolSize).taskDipose(
                TaskDisposeUtil.getTaskItems(list), taskHandler);
    }
}
